package net.devkit.common.service;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * 公共的服务接口，
 * @author shizeyuan
 *
 * @param <T>
 * @param <ID>
 */
public interface BaseServicer<T extends Serializable, ID extends Serializable> {
	
	/**创建一个实体
	 * @param t
	 * @return
	 */
	ID create(final T t);
	
	/**批量创建
	 * @param ts
	 */
	void createBatch(final Collection<T> ts);
	
	/**删除一个实体
	 * @param t
	 */
	void remove(final T t);
	
	/**根据id删除一个实体
	 * @param id
	 */
	void removeById(final ID id);
	
	/**批量删除
	 * @param ids
	 */
	void removeBatch(final Collection<ID> ids);
	
	/**更新一个实体
	 * @param t
	 */
	void modify(final T t);
	
	/**批量更新
	 * @param ts
	 */
	void modifyBatch(Collection<T> ts);
	
	/**创建或者更新
	 * @param t
	 */
	void createOrModify(final T t);
	
	/**
	 * 批量创建或者更新
	 * @param ts
	 */
	void createOrModifyBatch(Collection<T> ts);
	
	/**根据id加载实体
	 * @param id
	 * @return
	 */
	T loadEntityById(final ID id);
	
	/**根据ID查找实体
	 * @param id
	 * @return
	 */
	T findEntityById(final ID id);
	
	/**查找所有
	 * @return
	 */
	List<T> findAll();
	
	/**获取总记录数
	 * @return
	 */
	Long findCountAll();
	
	/**
	 * 强制提交
	 */
	void flush();
	
	/**
	 * 清空hibernate一级缓存里的对象
	 */
	void clear();

	

}
